package com.xiaoshuidi.cloud.module.rooms.enums;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Optional;

/**
 * 预定状态
 *
 * @Author Feng
 * @date 2023/5/20
 */
@Getter
@AllArgsConstructor
public enum RoomHouseReserveStatus {
    // 预订单状态： 待支付、已签约、待签约、已退定、已取消、失效

    // 提交预定未完成支付  对应操作:查看 支付 取消
    TO_BE_PAID("1", "待支付"),
//    RESERVED("2", "已预定"),
    // 预定单完成支付，等待合同签约  对应操作:查看 退定 签约
    RESERVED("2", "待签约"),
    // 预定单超时系统（根据运营配置预定配置）自动取消或运营端手动操作取消 对应操作:查看
    CANCELED("3", "已取消"),
    // 预定单完成签约  对应操作:查看
    SINGED("4", "已签约"),
    // 预定单支付后操作预定定的退定  对应操作:查看
    RETIRED("5", "已退定"),
    // 预定单到约定好的签约时间时未进行签约（根据运营配置预定配置），系统自动取消并将预定金金罚没转为违约金收入  对应操作:查看
    FAILURE("6", "失效"),
    ;


    private String code;
    private String name;

    public static String getCodeByName(String name) {
        if (StrUtil.isEmpty(name)) {
            return null;
        }
        Optional<RoomHouseReserveStatus> find = Arrays.stream(RoomHouseReserveStatus.values()).filter(s -> s.getName().equals(name)).findFirst();
        if (find.isPresent()) {
            return find.get().getCode();
        }
        return null;
    }

    public static String getNameByCode(String code) {
        if (StrUtil.isEmpty(code)) {
            return null;
        }
        Optional<RoomHouseReserveStatus> find = Arrays.stream(RoomHouseReserveStatus.values()).filter(s -> s.getCode().equals(code)).findFirst();
        if (find.isPresent()) {
            return find.get().getName();
        }
        return null;
    }
}
